<?php
class User{
	
	var $id;
	var $email;
	var $password;
	var $phone = null;
	var $contacts;
	
	function getUser($id){
		//recherche dans la BDD et r�cup�re renseigne l'objet selon l'id pass� en param�tre
		//retourn 1 si tout est ok, sinon 0 si pas de contact sinon -1
		
		
		//on recherche les infos sur l'user dans la BDD
		include_once 'Util/BDDfunctions.php';
		$rq = "select * from user where id = $id";
		$retour = executeBDD($rq);
		
		if($retour)
		{
			while($donnees = mysql_fetch_array($retour))
			{
				$this->id = $donnees['id'];
				$this->email = $donnees['email'];
				$this->password = $donnees['pwd'];
			}
		}
		else
		{
			return -1;
		}
		
		//on recherche ensuite les contacts
		$this->getContacts();
				
		//on recherche ensuite, les différents téléphones associés
		$this->getPhone();
		
		//on recherche ensuite, les différents messages envoyés et reçu.
		$this->getMessages();
		
		return 1;
	}
	
	function saveUserinBDD(){
		//sauvegarde l'objet dans la BDD

		include_once 'Util/BDDfunctions.php';
		
		//conv en md5
		$pwd = md5($this->password);
		$rq = "insert into user(email, pwd) values('$this->email','$pwd')";
		$retour = executeBDD($rq);
		
		if($retour)
		{
			//InscriptionOK
			include_once 'Controller/UserController.php';
			$ret = UserController($this->email, $this->password);		
			return $ret;
		}
		else
		{
			//Inscription échouée
			return -1;
		}
	}
	
	function getContacts(){
		//récupère les contacts dans la BDD
		//retourne le nombre de contacts trouvé
		
		include_once 'Util/BDDfunctions.php';
		include_once 'DAO/Contact.php';
		
		$rq = "select * from contact where id_user = $this->id order by name desc";
		$retour = executeBDD($rq);
		
		if($retour)
		{
			$this->contacts =  array();
			$num_rows = mysql_num_rows($retour);
			while($donnees = mysql_fetch_array($retour))
			{
				$c = new Contact();
				$c->id = $donnees['id'];
				$c->name = $donnees['name'];
				$c->phoneNumber = $donnees['phone_number'];
				
				array_push($this->contacts, $c);
			}
			return $num_rows;
		}
		else
		{
			return -1;
		}
	}
	
	function getContactsfromPhoneNumber($phoneNumber){
		//récupère le contact dans la BDD selon son numéro de tem
		//S'il n'est pas, il le créé.
	
		include_once 'DAO/Contact.php';
	
		foreach($this->contacts as $c)
		{
			if ($c->phoneNumber == $phoneNumber)
			{
				return $c;
			}
		}
		//contact non trouvé, il faut en créer un.
		$c = new Contact();
		$c->name = '';
		$c->phoneNumber = $phoneNumber;
		$c->saveContactinBDD();
		array_push($this->contacts, $c);
		return $c;
	}
	
	function toString(){
		echo("email : $this->email, id: $this->id");
	}
	
	/**
	 * Récupère les messages correpondant au user dans la base de données, et les associe aux Contacts
	 * La LISTE DE CONTACTS DOIT ETRE INITIALISEE
	 */
	function getMessages()
	{
		include_once 'Util/BDDfunctions.php';
		include_once 'DAO/Contact.php';
		
		$rq = "select * from message where id_user = $this->id order by dh asc";
		$retour = executeBDD($rq);
		
		if($retour)
		{
			
			$num_rows = mysql_num_rows($retour);
			while($donnees = mysql_fetch_array($retour))
			{
				$m = new Message();
				$m->id = $donnees['id'];
				$m->phoneNumber = $donnees['dest_number'];
				$m->texte = $donnees['txt'];
				$m->dateRE = date_create($donnees['dh']);//strtotime();
				$m->isExpediteur = (bool)$donnees['isExpediteur'];
				$m->accuse = (bool)$donnees['accuse'];
		
				//on associe le message aux contacts.
				$c = $this->getContactsfromPhoneNumber($m->phoneNumber);
				array_push($c->messages, $m);
			}
		}
		else
		{
			return -1;
		}
	}
	
	/**
	 * Récupère le Contact selon son ID dans la liste des contacts et non dans le BDD
	 */
	function getContactFromId($isContact)
	{
		foreach($this->contacts as $c)
		{
			if ($c->id == $isContact)
			{
				return $c;
			}
		}
		return null;
	}
	
	/**
	 * Récupère le numéro de téléphone associé à l'utilisateur dans BDD
	 */
	function getPhone()
	{
		include_once 'Util/includeAll.php';
		
		$rq = "select * from phone where id_user = $this->id";
		$retour = executeBDD($rq);
		
		if($retour)
		{		
			$num_rows = mysql_num_rows($retour);
			while($donnees = mysql_fetch_array($retour))
			{
				$p = new Phone();
				$p->lastActivty = date_create($donnees['last_activity']);
				$p->phoneNumber = $donnees['phone_number'];
				$p->id = $donnees['id'];
		
				$this->phone = $p;
				
				return 1;
			}
		}
		else
		{
			return 0;
		}
	}
	
	function getMessagesCount()
	{
		$nbMessages = 0;
		foreach ($this->contacts as $c)
		{
			$nbMessages += count($c->messages);
		}
		return $nbMessages;
	}
}

?>